package edu.upc.autopartescybershop.repository.hibernate;

import edu.upc.autopartescybershop.domain.Categoria;
import edu.upc.autopartescybershop.repository.CategoriaRepository;
import java.util.List;
import org.hibernate.SessionFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.orm.hibernate3.support.HibernateDaoSupport;
import org.springframework.stereotype.Repository;

@Repository
public class CategoriaRepositoryHibernate extends HibernateDaoSupport implements CategoriaRepository
{

    @Autowired
    public CategoriaRepositoryHibernate(SessionFactory sessionFactory)
    {
        setSessionFactory(sessionFactory);
    }

    @Override
    public List<Categoria> obtenerCategorias()
    {
       return getHibernateTemplate().find("from Categoria c");
    }

    @Override
    public Categoria obtenerCategoria(int codigo)
    {
       return (Categoria) getSession().
                createQuery("from Categoria c"
                + "  where c.Codigo = ?").
                setInteger(0, codigo).uniqueResult();
    }

    @Override
    public void grabarCategoria(Categoria categoria)
    {
       getHibernateTemplate().saveOrUpdate(categoria);
    }

    @Override
    public void eliminarCategoria(int codigo)
    {
        Categoria obj = obtenerCategoria(codigo);
        getHibernateTemplate().delete(obj);
    }
}
